{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\mpl_finance.py:16: DeprecationWarning: \n",
      "\n",
      "  =================================================================\n",
      "\n",
      "   WARNING: `mpl_finance` is deprecated:\n",
      "\n",
      "    Please use `mplfinance` instead (no hyphen, no underscore).\n",
      "\n",
      "    To install: `pip install --upgrade mplfinance` \n",
      "\n",
      "   For more information, see: https://pypi.org/project/mplfinance/\n",
      "\n",
      "  =================================================================\n",
      "\n",
      "  __warnings.warn('\\n\\n  ================================================================='+\n"
     ]
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import datetime\n",
    "from influxdb import InfluxDBClient\n",
    "import talib as  ta\n",
    "import seaborn as sns\n",
    "import numpy as np\n",
    "import warnings\n",
    "from matplotlib import pyplot as plt\n",
    "warnings.filterwarnings('ignore')\n",
    "import sys\n",
    "sys.path.append(\"..\")\n",
    "\n",
    "from common import candle"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "sqlday = \"select * from KlineDay where symbol='HSI' and  time > '2020-01-01 00:00:00'\"\n",
    "\n",
    "current_time = datetime.datetime.now()\n",
    "current_time\n",
    "dbname = \"KlineIndex\"\n",
    "client = InfluxDBClient('192.168.3.108',8086)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>vol</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>2020-01-02</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "      <td>28189.75</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.087495e+10</td>\n",
       "      <td>90874945129</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.788683e+10</td>\n",
       "      <td>97886830894</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.160570e+10</td>\n",
       "      <td>91605700189</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>HSI</td>\n",
       "      <td>8.641908e+10</td>\n",
       "      <td>86419084623</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>2020-01-08</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.655395e+10</td>\n",
       "      <td>96553949792</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  time     close      high       low      open  preclose  \\\n",
       "time                                                                       \n",
       "2020-01-02  2020-01-02  28543.52  28542.66  28245.97  28249.37  28189.75   \n",
       "2020-01-03  2020-01-03  28451.50  28883.30  28428.17  28828.36  28543.52   \n",
       "2020-01-06  2020-01-06  28226.19  28367.87  28054.29  28326.50  28451.50   \n",
       "2020-01-07  2020-01-07  28322.06  28473.08  28264.07  28352.68  28226.19   \n",
       "2020-01-08  2020-01-08  28087.92  28198.61  27857.73  27999.58  28322.06   \n",
       "\n",
       "           symbol         value          vol  \n",
       "time                                          \n",
       "2020-01-02    HSI  9.087495e+10  90874945129  \n",
       "2020-01-03    HSI  9.788683e+10  97886830894  \n",
       "2020-01-06    HSI  9.160570e+10  91605700189  \n",
       "2020-01-07    HSI  8.641908e+10  86419084623  \n",
       "2020-01-08    HSI  9.655395e+10  96553949792  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_day = pd.DataFrame( client.query(sqlday, database=dbname).get_points())\n",
    "df_day['time'] = pd.to_datetime(df_day['time'])\n",
    "df_day.time = df_day.time.apply(lambda x: x.strftime(\"%Y-%m-%d\"))\n",
    "\n",
    "df_day.index = pd.to_datetime(df_day['time'])\n",
    "df_day.head()"
   ]
  },
  {
   "cell_type": "raw",
   "metadata": {},
   "source": [
    "顶分型:  不包含包含关系\n",
    "\n",
    " h > h-1; h>h+1\n",
    " L > l-1; l>l+1\n",
    " \n",
    " 中继分型\n",
    " \n",
    "\n",
    "底分型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>vol</th>\n",
       "      <th>signal</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>2020-01-02</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "      <td>28189.75</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.087495e+10</td>\n",
       "      <td>90874945129</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.788683e+10</td>\n",
       "      <td>97886830894</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.160570e+10</td>\n",
       "      <td>91605700189</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>HSI</td>\n",
       "      <td>8.641908e+10</td>\n",
       "      <td>86419084623</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>2020-01-08</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.655395e+10</td>\n",
       "      <td>96553949792</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  time     close      high       low      open  preclose  \\\n",
       "time                                                                       \n",
       "2020-01-02  2020-01-02  28543.52  28542.66  28245.97  28249.37  28189.75   \n",
       "2020-01-03  2020-01-03  28451.50  28883.30  28428.17  28828.36  28543.52   \n",
       "2020-01-06  2020-01-06  28226.19  28367.87  28054.29  28326.50  28451.50   \n",
       "2020-01-07  2020-01-07  28322.06  28473.08  28264.07  28352.68  28226.19   \n",
       "2020-01-08  2020-01-08  28087.92  28198.61  27857.73  27999.58  28322.06   \n",
       "\n",
       "           symbol         value          vol  signal  \n",
       "time                                                  \n",
       "2020-01-02    HSI  9.087495e+10  90874945129       0  \n",
       "2020-01-03    HSI  9.788683e+10  97886830894       1  \n",
       "2020-01-06    HSI  9.160570e+10  91605700189      -1  \n",
       "2020-01-07    HSI  8.641908e+10  86419084623       1  \n",
       "2020-01-08    HSI  9.655395e+10  96553949792      -1  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def execute(sql):\n",
    "    import pymysql\n",
    "    try:\n",
    "        db = pymysql.connect(host= \"192.168.3.144\",\n",
    "                         user=\"gmgbj\",\n",
    "                         passwd='G7gIVYB9Xk^7',\n",
    "                         port=3306,\n",
    "                         charset='utf8',\n",
    "                        db='strategy')\n",
    "\n",
    "        cursor = db.cursor()\n",
    "\n",
    "        # 使用 execute()  方法执行 SQL 查询\n",
    "        cursor.execute(sql)\n",
    "        db.commit()\n",
    "    except Exception as e\n",
    "        print(e)\n",
    "        # 关闭数据库连接\n",
    "        db.rollback()\n",
    "        db.close()\n",
    "\n",
    "def fenxing(df):\n",
    "    df_fx = pd.DataFrame(df)\n",
    "    # df_fx['signal'] = np.all(df.high > df.high.shift(1), df.high > df.high.shift(-1)) * 1\n",
    "    \n",
    "    shape=[0]\n",
    "    for i in range(1, len(df) - 1,1):\n",
    "        if(np.all([df.high[i] > df.high[i-1], df.high[i] > df.high[i+1]]) * 1):\n",
    "            shape.append(1)\n",
    "        elif(np.all([df.low[i] < df.low[i-1], df.low[i] < df.low[i+1]]) * 1):\n",
    "            shape.append(-1)\n",
    "        else:\n",
    "            shape.append(0)\n",
    "        \n",
    "    \n",
    "    shape.append(0)\n",
    "    df_fx['signal'] = shape\n",
    "    return df_fx\n",
    "\n",
    "df1 = fenxing_ding(df_day)\n",
    "df1.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "candle.PlotKline(df_day['2020-01'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>open</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>2020-01-02</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>2020-01-08</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>2020-01-09</td>\n",
       "      <td>28561.00</td>\n",
       "      <td>28561.00</td>\n",
       "      <td>28325.86</td>\n",
       "      <td>28367.65</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>2020-01-10</td>\n",
       "      <td>28638.20</td>\n",
       "      <td>28665.14</td>\n",
       "      <td>28504.27</td>\n",
       "      <td>28665.14</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>2020-01-13</td>\n",
       "      <td>28954.94</td>\n",
       "      <td>28971.40</td>\n",
       "      <td>28671.84</td>\n",
       "      <td>28772.37</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>2020-01-14</td>\n",
       "      <td>28885.14</td>\n",
       "      <td>29149.53</td>\n",
       "      <td>28790.49</td>\n",
       "      <td>29149.53</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>2020-01-15</td>\n",
       "      <td>28773.59</td>\n",
       "      <td>28972.68</td>\n",
       "      <td>28619.10</td>\n",
       "      <td>28891.07</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-16</th>\n",
       "      <td>2020-01-16</td>\n",
       "      <td>28883.04</td>\n",
       "      <td>28987.73</td>\n",
       "      <td>28709.57</td>\n",
       "      <td>28806.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-17</th>\n",
       "      <td>2020-01-17</td>\n",
       "      <td>29056.42</td>\n",
       "      <td>29101.15</td>\n",
       "      <td>28813.13</td>\n",
       "      <td>28988.16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-20</th>\n",
       "      <td>2020-01-20</td>\n",
       "      <td>28795.91</td>\n",
       "      <td>29174.92</td>\n",
       "      <td>28795.42</td>\n",
       "      <td>29169.12</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-21</th>\n",
       "      <td>2020-01-21</td>\n",
       "      <td>27985.33</td>\n",
       "      <td>28492.03</td>\n",
       "      <td>27980.50</td>\n",
       "      <td>28449.38</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-22</th>\n",
       "      <td>2020-01-22</td>\n",
       "      <td>28341.04</td>\n",
       "      <td>28393.93</td>\n",
       "      <td>27937.68</td>\n",
       "      <td>28116.50</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-23</th>\n",
       "      <td>2020-01-23</td>\n",
       "      <td>27909.12</td>\n",
       "      <td>28133.03</td>\n",
       "      <td>27706.37</td>\n",
       "      <td>28109.75</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-24</th>\n",
       "      <td>2020-01-24</td>\n",
       "      <td>27949.64</td>\n",
       "      <td>27977.63</td>\n",
       "      <td>27774.50</td>\n",
       "      <td>27935.42</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-29</th>\n",
       "      <td>2020-01-29</td>\n",
       "      <td>27160.63</td>\n",
       "      <td>27333.30</td>\n",
       "      <td>27101.54</td>\n",
       "      <td>27101.54</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-30</th>\n",
       "      <td>2020-01-30</td>\n",
       "      <td>26449.13</td>\n",
       "      <td>27134.55</td>\n",
       "      <td>26330.05</td>\n",
       "      <td>27030.61</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-31</th>\n",
       "      <td>2020-01-31</td>\n",
       "      <td>26312.63</td>\n",
       "      <td>26818.84</td>\n",
       "      <td>26295.49</td>\n",
       "      <td>26757.61</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  time     close      high       low      open\n",
       "time                                                          \n",
       "2020-01-02  2020-01-02  28543.52  28542.66  28245.97  28249.37\n",
       "2020-01-03  2020-01-03  28451.50  28883.30  28428.17  28828.36\n",
       "2020-01-06  2020-01-06  28226.19  28367.87  28054.29  28326.50\n",
       "2020-01-07  2020-01-07  28322.06  28473.08  28264.07  28352.68\n",
       "2020-01-08  2020-01-08  28087.92  28198.61  27857.73  27999.58\n",
       "2020-01-09  2020-01-09  28561.00  28561.00  28325.86  28367.65\n",
       "2020-01-10  2020-01-10  28638.20  28665.14  28504.27  28665.14\n",
       "2020-01-13  2020-01-13  28954.94  28971.40  28671.84  28772.37\n",
       "2020-01-14  2020-01-14  28885.14  29149.53  28790.49  29149.53\n",
       "2020-01-15  2020-01-15  28773.59  28972.68  28619.10  28891.07\n",
       "2020-01-16  2020-01-16  28883.04  28987.73  28709.57  28806.12\n",
       "2020-01-17  2020-01-17  29056.42  29101.15  28813.13  28988.16\n",
       "2020-01-20  2020-01-20  28795.91  29174.92  28795.42  29169.12\n",
       "2020-01-21  2020-01-21  27985.33  28492.03  27980.50  28449.38\n",
       "2020-01-22  2020-01-22  28341.04  28393.93  27937.68  28116.50\n",
       "2020-01-23  2020-01-23  27909.12  28133.03  27706.37  28109.75\n",
       "2020-01-24  2020-01-24  27949.64  27977.63  27774.50  27935.42\n",
       "2020-01-29  2020-01-29  27160.63  27333.30  27101.54  27101.54\n",
       "2020-01-30  2020-01-30  26449.13  27134.55  26330.05  27030.61\n",
       "2020-01-31  2020-01-31  26312.63  26818.84  26295.49  26757.61"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df2= df_day['2020-01'][['time','close','high','low','open']]\n",
    "df2.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 67,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "insert into signalsinfo (hqdate, market, symbol, S1) values(\"2020-01-02\",\"HK\",\"HSI\",\"0\") ON DUPLICATE KEY UPDATE S1=0\n",
      "insert into signalsinfo (hqdate, market, symbol, S1) values(\"2020-01-02\",\"HK\",\"HSI\",\"0\") ON DUPLICATE KEY UPDATE S1=0\n"
     ]
    }
   ],
   "source": [
    "for idrow, row in df1.iterrows():\n",
    "    try:\n",
    "        sql = 'insert into signalsinfo (hqdate, market, symbol, S1) values(\"{}\",\"{}\",\"{}\",\"{}\") ON DUPLICATE KEY UPDATE S1={}' \\\n",
    "            .format(row['time'],'HK','HSI', str(row['signal']), str(row['signal']))\n",
    "        execute(sql)\n",
    "        # print(sql)\n",
    "        break\n",
    "    except Exception as e:\n",
    "        print(e)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1152x576 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "candle.PlotKline(df2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>close</th>\n",
       "      <th>high</th>\n",
       "      <th>low</th>\n",
       "      <th>open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>vol</th>\n",
       "      <th>signal</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>2020-01-02</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "      <td>28189.75</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.087495e+10</td>\n",
       "      <td>90874945129</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.788683e+10</td>\n",
       "      <td>97886830894</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.160570e+10</td>\n",
       "      <td>91605700189</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>HSI</td>\n",
       "      <td>8.641908e+10</td>\n",
       "      <td>86419084623</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>2020-01-08</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.655395e+10</td>\n",
       "      <td>96553949792</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>...</th>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "      <td>...</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-25</th>\n",
       "      <td>2021-10-25</td>\n",
       "      <td>26132.03</td>\n",
       "      <td>26212.90</td>\n",
       "      <td>25929.67</td>\n",
       "      <td>26020.78</td>\n",
       "      <td>26126.93</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.112186e+11</td>\n",
       "      <td>9759178114</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-26</th>\n",
       "      <td>2021-10-26</td>\n",
       "      <td>26038.27</td>\n",
       "      <td>26234.94</td>\n",
       "      <td>25905.08</td>\n",
       "      <td>26234.94</td>\n",
       "      <td>26132.03</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.139893e+11</td>\n",
       "      <td>9900247363</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-27</th>\n",
       "      <td>2021-10-27</td>\n",
       "      <td>25628.74</td>\n",
       "      <td>25795.17</td>\n",
       "      <td>25555.17</td>\n",
       "      <td>25795.17</td>\n",
       "      <td>26038.27</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.206878e+11</td>\n",
       "      <td>10786854190</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-28</th>\n",
       "      <td>2021-10-28</td>\n",
       "      <td>25555.73</td>\n",
       "      <td>25736.38</td>\n",
       "      <td>25473.16</td>\n",
       "      <td>25648.42</td>\n",
       "      <td>25628.74</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.293107e+11</td>\n",
       "      <td>12083500051</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2021-10-29</th>\n",
       "      <td>2021-10-29</td>\n",
       "      <td>25448.68</td>\n",
       "      <td>25499.42</td>\n",
       "      <td>25446.89</td>\n",
       "      <td>25466.86</td>\n",
       "      <td>25555.73</td>\n",
       "      <td>HSI</td>\n",
       "      <td>5.405534e+09</td>\n",
       "      <td>344117657</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>447 rows × 10 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                  time     close      high       low      open  preclose  \\\n",
       "time                                                                       \n",
       "2020-01-02  2020-01-02  28543.52  28542.66  28245.97  28249.37  28189.75   \n",
       "2020-01-03  2020-01-03  28451.50  28883.30  28428.17  28828.36  28543.52   \n",
       "2020-01-06  2020-01-06  28226.19  28367.87  28054.29  28326.50  28451.50   \n",
       "2020-01-07  2020-01-07  28322.06  28473.08  28264.07  28352.68  28226.19   \n",
       "2020-01-08  2020-01-08  28087.92  28198.61  27857.73  27999.58  28322.06   \n",
       "...                ...       ...       ...       ...       ...       ...   \n",
       "2021-10-25  2021-10-25  26132.03  26212.90  25929.67  26020.78  26126.93   \n",
       "2021-10-26  2021-10-26  26038.27  26234.94  25905.08  26234.94  26132.03   \n",
       "2021-10-27  2021-10-27  25628.74  25795.17  25555.17  25795.17  26038.27   \n",
       "2021-10-28  2021-10-28  25555.73  25736.38  25473.16  25648.42  25628.74   \n",
       "2021-10-29  2021-10-29  25448.68  25499.42  25446.89  25466.86  25555.73   \n",
       "\n",
       "           symbol         value          vol  signal  \n",
       "time                                                  \n",
       "2020-01-02    HSI  9.087495e+10  90874945129       0  \n",
       "2020-01-03    HSI  9.788683e+10  97886830894       1  \n",
       "2020-01-06    HSI  9.160570e+10  91605700189      -1  \n",
       "2020-01-07    HSI  8.641908e+10  86419084623       1  \n",
       "2020-01-08    HSI  9.655395e+10  96553949792      -1  \n",
       "...           ...           ...          ...     ...  \n",
       "2021-10-25    HSI  1.112186e+11   9759178114       0  \n",
       "2021-10-26    HSI  1.139893e+11   9900247363       1  \n",
       "2021-10-27    HSI  1.206878e+11  10786854190       0  \n",
       "2021-10-28    HSI  1.293107e+11  12083500051       0  \n",
       "2021-10-29    HSI  5.405534e+09    344117657       0  \n",
       "\n",
       "[447 rows x 10 columns]"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1152x576 with 0 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "candle.PlotKline(df_day['2020-01'])\n",
    "# candle.candlePlot(df_day)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>Date</th>\n",
       "      <th>Close</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>Volume</th>\n",
       "      <th>signal</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>time</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>2020-01-02</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "      <td>28189.75</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.087495e+10</td>\n",
       "      <td>90874945129</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>2020-01-03</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.788683e+10</td>\n",
       "      <td>97886830894</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>2020-01-06</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.160570e+10</td>\n",
       "      <td>91605700189</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>2020-01-07</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>HSI</td>\n",
       "      <td>8.641908e+10</td>\n",
       "      <td>86419084623</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>2020-01-08</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.655395e+10</td>\n",
       "      <td>96553949792</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                  Date     Close      High       Low      Open  preclose  \\\n",
       "time                                                                       \n",
       "2020-01-02  2020-01-02  28543.52  28542.66  28245.97  28249.37  28189.75   \n",
       "2020-01-03  2020-01-03  28451.50  28883.30  28428.17  28828.36  28543.52   \n",
       "2020-01-06  2020-01-06  28226.19  28367.87  28054.29  28326.50  28451.50   \n",
       "2020-01-07  2020-01-07  28322.06  28473.08  28264.07  28352.68  28226.19   \n",
       "2020-01-08  2020-01-08  28087.92  28198.61  27857.73  27999.58  28322.06   \n",
       "\n",
       "           symbol         value       Volume  signal  \n",
       "time                                                  \n",
       "2020-01-02    HSI  9.087495e+10  90874945129       0  \n",
       "2020-01-03    HSI  9.788683e+10  97886830894       1  \n",
       "2020-01-06    HSI  9.160570e+10  91605700189      -1  \n",
       "2020-01-07    HSI  8.641908e+10  86419084623       1  \n",
       "2020-01-08    HSI  9.655395e+10  96553949792      -1  "
      ]
     },
     "execution_count": 62,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_vol = df_day['2020-01']\n",
    "df_vol.drop('Date', axis=1, inplace=True)\n",
    "df_vol.rename( columns={'time':'Date','open':'Open', 'high':'High','low':'Low',\"close\":'Close','vol':\"Volume\"}, inplace=True)\n",
    "\n",
    "df_vol.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA7gAAAHfCAYAAAB6V3SQAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeZzO5f7H8dc1i13EcDO24dizLyFh7BKKo+TIIVs60W6Ln8YaDtoUWcKpUCp1yk4GYSprSDmpUWMsJZR9zFy/P763m5GZuTH33LO8n4/H9zFnrvu7fG7n7p7v53td1+cy1lpEREREREREMroAfwcgIiIiIiIikhqU4IqIiIiIiEimoARXREREREREMgUluCIiIiIiIpIpKMEVERERERGRTEEJroiIiIiIiGQKSnBFREREREQkU1CCKyIiIiIiIpmCElwRERERERHJFJTgioiIZGDGmFHGmEPGmJ+NMd39HY+IiIg/Bfk7ABEREbk5xpiSQCOgPJAP2A687degRERE/MhYa/0dg4iIiNwkY0w14H6gKRBurTV+DklERMRvNERZREQkgzLGNAKWAD8CPf0bjYiIiP8pwRUREcm46gFfAQuBtn6ORURExO+U4IqIiGRcHwBVgFigMnDaGFPevyGJiIj4j+bgioiIiIiISKagHlwRERERERHJFJTgioiIiIiISKagBFdEREREREQyBSW4IiIiIiIikikowRUREREREZFMIcjfAfhCSEiIDQsL83cYkgWdOXOG3Llz+zsMkTSnz75kRruO7uJS/KUU98sXnI9TcaeS3ScoMIjqruqpFZpIuqDvfvGnbdu2/WatLXRte6ZMcMPCwti6dau/w5AsKDIykvDwcH+HIZLm9NmXzMiMMl7td2eBO1n9++pk97nEJba+oHsTyVz03S/+ZIw5eL32TJngiohIxlRkchGOnjmaKudy5XZx5LkjqXIuERERyRg0B1dERNKN1EpuU/tcIiIikjEowRUREREREZFMQUOURUREsqp586BnT39HISIiSYiLiyMmJobz58/7OxS/yZEjB8WLFyc4ONir/ZXgioiIZFXR0f6OQEREkhETE0PevHkJCwvDGO8K32Um1lqOHz9OTEwMpUuX9uoYDVEWERHJYvbv38/QoUMZFRnJypUrOXHihL9DEhGR6zh//jwF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\n",
      "text/plain": [
       "<Figure size 1152x576 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "\n",
    "candle.candleVolume(df_vol)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 20 entries, 0 to 19\n",
      "Data columns (total 11 columns):\n",
      " #   Column    Non-Null Count  Dtype  \n",
      "---  ------    --------------  -----  \n",
      " 0   time      20 non-null     object \n",
      " 1   Date      20 non-null     object \n",
      " 2   Close     20 non-null     float64\n",
      " 3   High      20 non-null     float64\n",
      " 4   Low       20 non-null     float64\n",
      " 5   Open      20 non-null     float64\n",
      " 6   preclose  20 non-null     float64\n",
      " 7   symbol    20 non-null     object \n",
      " 8   value     20 non-null     float64\n",
      " 9   Volume    20 non-null     int64  \n",
      " 10  signal    20 non-null     int64  \n",
      "dtypes: float64(6), int64(2), object(3)\n",
      "memory usage: 1.8+ KB\n"
     ]
    }
   ],
   "source": [
    "#df_vol.time = str(df_vol.time)\n",
    "df_vol.info()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 60,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>time</th>\n",
       "      <th>Close</th>\n",
       "      <th>High</th>\n",
       "      <th>Low</th>\n",
       "      <th>Open</th>\n",
       "      <th>preclose</th>\n",
       "      <th>symbol</th>\n",
       "      <th>value</th>\n",
       "      <th>Volume</th>\n",
       "      <th>signal</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>Date</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>2020-01-02</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>28542.66</td>\n",
       "      <td>28245.97</td>\n",
       "      <td>28249.37</td>\n",
       "      <td>28189.75</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.087495e+10</td>\n",
       "      <td>90874945129</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-03</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>28883.30</td>\n",
       "      <td>28428.17</td>\n",
       "      <td>28828.36</td>\n",
       "      <td>28543.52</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.788683e+10</td>\n",
       "      <td>97886830894</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-06</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>28367.87</td>\n",
       "      <td>28054.29</td>\n",
       "      <td>28326.50</td>\n",
       "      <td>28451.50</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.160570e+10</td>\n",
       "      <td>91605700189</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-07</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>28473.08</td>\n",
       "      <td>28264.07</td>\n",
       "      <td>28352.68</td>\n",
       "      <td>28226.19</td>\n",
       "      <td>HSI</td>\n",
       "      <td>8.641908e+10</td>\n",
       "      <td>86419084623</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-08</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>28198.61</td>\n",
       "      <td>27857.73</td>\n",
       "      <td>27999.58</td>\n",
       "      <td>28322.06</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.655395e+10</td>\n",
       "      <td>96553949792</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-09</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28561.00</td>\n",
       "      <td>28561.00</td>\n",
       "      <td>28325.86</td>\n",
       "      <td>28367.65</td>\n",
       "      <td>28087.92</td>\n",
       "      <td>HSI</td>\n",
       "      <td>9.573784e+10</td>\n",
       "      <td>95737836439</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-10</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28638.20</td>\n",
       "      <td>28665.14</td>\n",
       "      <td>28504.27</td>\n",
       "      <td>28665.14</td>\n",
       "      <td>28561.00</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.052733e+11</td>\n",
       "      <td>105273341384</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-13</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28954.94</td>\n",
       "      <td>28971.40</td>\n",
       "      <td>28671.84</td>\n",
       "      <td>28772.37</td>\n",
       "      <td>28638.20</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.118110e+11</td>\n",
       "      <td>111811003475</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-14</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28885.14</td>\n",
       "      <td>29149.53</td>\n",
       "      <td>28790.49</td>\n",
       "      <td>29149.53</td>\n",
       "      <td>28954.94</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.191928e+11</td>\n",
       "      <td>119192783869</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-15</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28773.59</td>\n",
       "      <td>28972.68</td>\n",
       "      <td>28619.10</td>\n",
       "      <td>28891.07</td>\n",
       "      <td>28885.14</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.004313e+11</td>\n",
       "      <td>100431333622</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-16</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28883.04</td>\n",
       "      <td>28987.73</td>\n",
       "      <td>28709.57</td>\n",
       "      <td>28806.12</td>\n",
       "      <td>28773.59</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.015016e+11</td>\n",
       "      <td>101501632976</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-17</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>29056.42</td>\n",
       "      <td>29101.15</td>\n",
       "      <td>28813.13</td>\n",
       "      <td>28988.16</td>\n",
       "      <td>28883.04</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.113606e+11</td>\n",
       "      <td>111360578177</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-20</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28795.91</td>\n",
       "      <td>29174.92</td>\n",
       "      <td>28795.42</td>\n",
       "      <td>29169.12</td>\n",
       "      <td>29056.42</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.115991e+11</td>\n",
       "      <td>111599105222</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-21</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>27985.33</td>\n",
       "      <td>28492.03</td>\n",
       "      <td>27980.50</td>\n",
       "      <td>28449.38</td>\n",
       "      <td>28795.91</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.328403e+11</td>\n",
       "      <td>132840257075</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-22</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>28341.04</td>\n",
       "      <td>28393.93</td>\n",
       "      <td>27937.68</td>\n",
       "      <td>28116.50</td>\n",
       "      <td>27985.33</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.014927e+11</td>\n",
       "      <td>101492718438</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-23</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>27909.12</td>\n",
       "      <td>28133.03</td>\n",
       "      <td>27706.37</td>\n",
       "      <td>28109.75</td>\n",
       "      <td>28341.04</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.187059e+11</td>\n",
       "      <td>118705938138</td>\n",
       "      <td>-1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-24</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>27949.64</td>\n",
       "      <td>27977.63</td>\n",
       "      <td>27774.50</td>\n",
       "      <td>27935.42</td>\n",
       "      <td>27909.12</td>\n",
       "      <td>HSI</td>\n",
       "      <td>4.732153e+10</td>\n",
       "      <td>47321532412</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-29</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>27160.63</td>\n",
       "      <td>27333.30</td>\n",
       "      <td>27101.54</td>\n",
       "      <td>27101.54</td>\n",
       "      <td>27949.64</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.240512e+11</td>\n",
       "      <td>124051186070</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-30</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>26449.13</td>\n",
       "      <td>27134.55</td>\n",
       "      <td>26330.05</td>\n",
       "      <td>27030.61</td>\n",
       "      <td>27160.63</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.243961e+11</td>\n",
       "      <td>124396061501</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2020-01-31</th>\n",
       "      <td>0    2020-01-02\\n1    2020-01-03\\n2    2020-01...</td>\n",
       "      <td>26312.63</td>\n",
       "      <td>26818.84</td>\n",
       "      <td>26295.49</td>\n",
       "      <td>26757.61</td>\n",
       "      <td>26449.13</td>\n",
       "      <td>HSI</td>\n",
       "      <td>1.030245e+11</td>\n",
       "      <td>103024467525</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                         time     Close  \\\n",
       "Date                                                                      \n",
       "2020-01-02  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28543.52   \n",
       "2020-01-03  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28451.50   \n",
       "2020-01-06  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28226.19   \n",
       "2020-01-07  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28322.06   \n",
       "2020-01-08  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28087.92   \n",
       "2020-01-09  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28561.00   \n",
       "2020-01-10  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28638.20   \n",
       "2020-01-13  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28954.94   \n",
       "2020-01-14  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28885.14   \n",
       "2020-01-15  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28773.59   \n",
       "2020-01-16  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28883.04   \n",
       "2020-01-17  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  29056.42   \n",
       "2020-01-20  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28795.91   \n",
       "2020-01-21  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  27985.33   \n",
       "2020-01-22  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  28341.04   \n",
       "2020-01-23  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  27909.12   \n",
       "2020-01-24  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  27949.64   \n",
       "2020-01-29  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  27160.63   \n",
       "2020-01-30  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  26449.13   \n",
       "2020-01-31  0    2020-01-02\\n1    2020-01-03\\n2    2020-01...  26312.63   \n",
       "\n",
       "                High       Low      Open  preclose symbol         value  \\\n",
       "Date                                                                      \n",
       "2020-01-02  28542.66  28245.97  28249.37  28189.75    HSI  9.087495e+10   \n",
       "2020-01-03  28883.30  28428.17  28828.36  28543.52    HSI  9.788683e+10   \n",
       "2020-01-06  28367.87  28054.29  28326.50  28451.50    HSI  9.160570e+10   \n",
       "2020-01-07  28473.08  28264.07  28352.68  28226.19    HSI  8.641908e+10   \n",
       "2020-01-08  28198.61  27857.73  27999.58  28322.06    HSI  9.655395e+10   \n",
       "2020-01-09  28561.00  28325.86  28367.65  28087.92    HSI  9.573784e+10   \n",
       "2020-01-10  28665.14  28504.27  28665.14  28561.00    HSI  1.052733e+11   \n",
       "2020-01-13  28971.40  28671.84  28772.37  28638.20    HSI  1.118110e+11   \n",
       "2020-01-14  29149.53  28790.49  29149.53  28954.94    HSI  1.191928e+11   \n",
       "2020-01-15  28972.68  28619.10  28891.07  28885.14    HSI  1.004313e+11   \n",
       "2020-01-16  28987.73  28709.57  28806.12  28773.59    HSI  1.015016e+11   \n",
       "2020-01-17  29101.15  28813.13  28988.16  28883.04    HSI  1.113606e+11   \n",
       "2020-01-20  29174.92  28795.42  29169.12  29056.42    HSI  1.115991e+11   \n",
       "2020-01-21  28492.03  27980.50  28449.38  28795.91    HSI  1.328403e+11   \n",
       "2020-01-22  28393.93  27937.68  28116.50  27985.33    HSI  1.014927e+11   \n",
       "2020-01-23  28133.03  27706.37  28109.75  28341.04    HSI  1.187059e+11   \n",
       "2020-01-24  27977.63  27774.50  27935.42  27909.12    HSI  4.732153e+10   \n",
       "2020-01-29  27333.30  27101.54  27101.54  27949.64    HSI  1.240512e+11   \n",
       "2020-01-30  27134.55  26330.05  27030.61  27160.63    HSI  1.243961e+11   \n",
       "2020-01-31  26818.84  26295.49  26757.61  26449.13    HSI  1.030245e+11   \n",
       "\n",
       "                  Volume  signal  \n",
       "Date                              \n",
       "2020-01-02   90874945129       0  \n",
       "2020-01-03   97886830894       1  \n",
       "2020-01-06   91605700189      -1  \n",
       "2020-01-07   86419084623       1  \n",
       "2020-01-08   96553949792      -1  \n",
       "2020-01-09   95737836439       0  \n",
       "2020-01-10  105273341384       0  \n",
       "2020-01-13  111811003475       0  \n",
       "2020-01-14  119192783869       1  \n",
       "2020-01-15  100431333622      -1  \n",
       "2020-01-16  101501632976       0  \n",
       "2020-01-17  111360578177       0  \n",
       "2020-01-20  111599105222       1  \n",
       "2020-01-21  132840257075       0  \n",
       "2020-01-22  101492718438       0  \n",
       "2020-01-23  118705938138      -1  \n",
       "2020-01-24   47321532412       0  \n",
       "2020-01-29  124051186070       0  \n",
       "2020-01-30  124396061501       0  \n",
       "2020-01-31  103024467525       0  "
      ]
     },
     "execution_count": 60,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# df_vol.reset_index(inplace=True)\n",
    "# df_vol.set_index('Date')"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
